home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / nyan_e2 / nyane2rd.plp < prev    next >
Text File  |  1993-11-30  |  13KB  |  662 lines

  1. /**********   RTNファイルを元に取得発言を設定する  v1.04a用   **********/
  2.  
  3. %limit    {0};    /* memoに表示するタイトルの総数 (「0」で全指定) */
  4.  
  5. var objfile[82];
  6. var FORUM[10];
  7. var MES[3];
  8. var MesType[3];
  9. var Line[82];
  10. var item[8];
  11. var item2[8];
  12. var flag[3];
  13. var mark[3];
  14. var MIDOKU[4];
  15. var sp[2];
  16.  
  17. %mcopy{[ORI,NEW]
  18.     var now[5];
  19.     now:=0;
  20.     %max    @nolmemo(ORI);
  21.     loop({
  22.         madd(NEW,@memo(ORI,now+1,memomax));
  23.         case(now+memomax<max,
  24.         {Yes},{    now:=now+memomax;
  25.             im({Yes});
  26.         },{No},{im({No});
  27.         });
  28.     });
  29. };
  30.  
  31. %mmove{[ORI,First,End,NEW]
  32.     var now[5];
  33.     now:=First-1;
  34.     loop({
  35.         case(now+memomax<End,
  36.         {Yes},{
  37.             madd(NEW,@memo(ORI,now+1,memomax));
  38.             now:=now+memomax;
  39.             im({Yes});
  40.         },{No},{
  41.             madd(NEW,@memo(ORI,now+1,End-now));
  42.             im({No});
  43.         });
  44.     });
  45. };
  46.  
  47. %setOLD{
  48.     %tmp    logd|{\_READ.TMP};
  49.     %letter    @getchar(ID,1,1);
  50.     item:=1;
  51.     mwrite(tmp,2);
  52.     mclear(2);
  53.     Line:=@read(tmp,1,1);
  54.     case(@getchar(Line,6,8)=ID && @getchar(Line,1,1)={ },
  55.     {Yes},{    madd(2,{});
  56.     },{No},{madd(2,@getchar(Line,1,2));
  57.     });
  58.     fopen(tmp);
  59.     loop({
  60.         Line:=@fread(6,letter);
  61.         item2:=@ftell;
  62.         case(@getchar(Line,6,8)=ID && @getchar(Line,1,1)={ },{Yes},{
  63.             mread(tmp,2,item+1,item2-item-1);
  64.             madd(2,mark);
  65.             item:=item2;
  66.         });
  67.         im(Line<>{});
  68.     });
  69.     mread(tmp,2,item+1,99999);
  70.     delfile(tmp);
  71. };
  72.  
  73. %setNEW{
  74.     %tmp    logd|{\_READ.TMP};
  75.     %letter    @getchar(ID,1,1);
  76.     item:=1;
  77.     mwrite(tmp,2);
  78.     mclear(2);
  79.     Line:=@read(tmp,1,1);
  80.     case(@getchar(Line,8,8)=ID && @getchar(Line,1,1)={ },
  81.     {Yes},{    madd(2,{});
  82.     },{No},{madd(2,@getchar(Line,1,2));
  83.     });
  84.     fopen(tmp);
  85.     loop({
  86.         Line:=@fread(8,letter);
  87.         item2:=@ftell;
  88.         case(@getchar(Line,8,8)=ID && @getchar(Line,1,1)={ },{Yes},{
  89.             mread(tmp,2,item+1,item2-item-1);
  90.             madd(2,mark);
  91.             item:=item2;
  92.         });
  93.         im(Line<>{});
  94.     });
  95.     mread(tmp,2,item+1,99999);
  96.     delfile(tmp);
  97. };
  98.  
  99. %IDset{
  100.     CloseAllMemo;
  101.     footnote({ ただいまデータを書き出しています});
  102.     case(MesType,{OLD},{setOLD},{NEW},{setNEW});
  103. };
  104.  
  105. %SelHan{
  106.     var ID[10];
  107.     %mtxt    logd|{\}|FORUM|{\MEMBER.TXT};
  108.     CloseAllMemo;
  109.     mclear(3);
  110.     case(@filechk(mtxt),
  111.     {Yes},{    mread(mtxt,3);
  112.     },{No},{mread(logd|{\MAIL\MEMBER.TXT},3);
  113.     });
  114.     mopen(3,0,21,256,459,{w});
  115.     footnote({終了決定},{b});
  116.     loop({
  117.         waitx(1000);
  118.         im(@xtype!=3 && @xtype<100 || @xlinenum<0)
  119.     });
  120.     case(@PFK(@xtype),
  121.         3,{ ID:=@getchar(@memo(3,@xlinenum),1,8);
  122.         IDset;
  123.     },101,{ CloseAllMemo; ID:={};
  124.     },102,{ ID:=@getchar(@memo(2,@xlinenum),1,8);
  125.         IDset;
  126.     });
  127.     footnote({});
  128.     mclear(3);
  129. };
  130.  
  131. %RMN{
  132.     var num[6];
  133.     var count[6];
  134.     var Line[82];
  135.     var res[6];
  136.     var hasen[5];
  137.     footnote({ ただいまmemoのデータをRMN化しております});
  138.     count:=1;
  139.     case(MesType,
  140.     {OLD},{
  141.         %rmn{
  142.             loop({
  143.                 count:=count+1;
  144.                 Line:=@memo(2,count,1);
  145.                 res:=@getchar(Line,27,3);
  146.                 hasen:=@getchar(Line,2,5);
  147.                 case(res>=num,{No},{
  148.                     madd(3,Line);
  149.                 });
  150.                 im(Line<>{} && hasen<>{-----});
  151.             });
  152.         };
  153.         num:=@tail(@getchar(@memo(2,1,1),2,3),{ });
  154.         madd(3,@memo(2,count,1));
  155.         case(num>0,{No},{
  156.             num:=@tail(@getchar(@memo(2,2,1),2,3),{ });
  157.             count:=2;
  158.             madd(3,@memo(2,2,1));
  159.         });
  160.         rmn;
  161.         case(Line<>{},{Yes},{
  162.             count:=count+1;
  163.             num:=@tail(@getchar(@memo(2,count,1),2,3),{ });
  164.             madd(3,@memo(2,count,1));
  165.             rmn;
  166.         });
  167.     },{NEW},{
  168.         %rmn{
  169.             loop({
  170.                 count:=count+1;
  171.                 Line:=@memo(2,count,1);
  172.                 res:=@getchar(Line,29,5);
  173.                 hasen:=@getchar(Line,2,5);
  174.                 case(res>=num,{No},{
  175.                     madd(3,Line);
  176.                 });
  177.                 im(Line<>{} && hasen<>{-----});
  178.             });
  179.         };
  180.         num:=@tail(@getchar(@memo(2,1,1),2,5),{ });
  181.         madd(3,@memo(2,1,1));
  182.         case(num>0,{No},{
  183.             num:=@tail(@getchar(@memo(2,2,1),2,5),{ });
  184.             count:=2;
  185.             madd(3,@memo(2,2,1));
  186.         });
  187.         rmn;
  188.         case(Line<>{},{Yes},{
  189.             count:=count+1;
  190.             num:=@tail(@getchar(@memo(2,count,1),2,5),{ });
  191.             madd(3,@memo(2,count,1));
  192.             rmn;
  193.         });
  194.     });
  195.     mclear(2);
  196.     mcopy(3,2);
  197.     mclear(3);
  198. };
  199.  
  200. %Who{
  201.     %SetHandle{
  202.         Handle:=@head(@getchar(Line,11,18),{\n});
  203.         loop({
  204.             case(@getchar(Handle,@nochar(Handle),1)={ },
  205.             {Yes},{    Handle:=@body(Handle,,{ }); im({Yes});
  206.             },{No},{
  207.                 case(@getchar(Handle,@nochar(Handle)-1,2)={ },
  208.                 {Yes},{    Handle:=@body(Handle,,{ }); im({Yes});
  209.                 },{No},{im({No});
  210.                 });
  211.             });
  212.         });
  213.     };
  214.     var NowIndex[82];
  215.     var Dir[8];
  216.     var ID[8];
  217.     var Handle[18];
  218.     var num[6];
  219.     Handle:={};
  220.     NowIndex:=@memo(2,linenum,1);
  221.     case(MesType,
  222.     {OLD},{     ID:=@getchar(NowIndex,6,8);
  223.          num:={#}|@tail(@getchar(NowIndex,2,3),{ });
  224.     },{NEW},{ID:=@getchar(NowIndex,8,8);
  225.          num:={#}|@tail(@getchar(NowIndex,2,5),{ });
  226.     });
  227.     %letter    @getchar(ID,1,1);
  228.     case(@filechk(logd|{\}|FORUM|{\MEMBER.TXT}),
  229.     {Yes},{    Dir:=FORUM;
  230.     },{No},{Dir:={MAIL};
  231.     });
  232.     case(@fopen(logd|{\}|Dir|{\MEMBER.TXT}),{Yes},{
  233.         loop({
  234.             Line:=@fread(1,letter);
  235.             case(@getchar(Line,1,8)=ID,{Yes},{
  236.                 SetHandle;
  237.             });
  238.             im(Line<>{});
  239.         });
  240.         fclose;
  241.         case(Handle<>{},
  242.         {Yes},{    select(num|{ は「}|Handle|{」氏の発言です},5,,{ OK?});
  243.         },{No},{select(num|{ の該当者は見当たりませんでした},5,,
  244.             { OK?});
  245.         });
  246.     });
  247. };
  248.  
  249. %ChkType{
  250.     var IndexLine[82];
  251.     fopen(objfile);
  252.     loop({
  253.         IndexLine:=@fread;
  254.         case(@getchar(IndexLine,17,1)={/} && 
  255.                 @getchar(IndexLine,23,1)={:},
  256.         {Yes},{
  257.             MesType:={OLD};
  258.             sp:=17;
  259.             im({No});
  260.         },{No},{
  261.             case(@getchar(IndexLine,19,1)={/} && 
  262.                     @getchar(IndexLine,25,1)={:},
  263.             {Yes},{
  264.                 MesType:={NEW};
  265.                 sp:=19;
  266.                 im({No});
  267.             },{No},{
  268.                 im(IndexLine<>{});
  269.             });
  270.         });
  271.     });
  272.     fclose;
  273. };
  274.  
  275. %catdata{
  276.     var data2[1000];
  277.     var num[600];
  278.     var Hnum[6];
  279.     var Tnum[6];
  280.  
  281.     data2:=data;
  282.     data:={};
  283.     num:=@head(data2,{,});
  284.     data2:=@body(data2,{,});
  285.     Hnum:=num; Tnum:=num;
  286.     loop({
  287.         num:=@head(data2,{,});
  288.         data2:=@body(data2,{,});
  289.         case(Tnum+1=num,
  290.         {Yes},{Tnum:=num;
  291.         },{No},{
  292.             case(Hnum==Tnum,
  293.             {Yes},{    data:=data|Hnum|{,};
  294.             },{No},{data:=data|Hnum|{-}|Tnum|{,};
  295.             });
  296.             Hnum:=num; Tnum:=num;
  297.         });
  298.         im(data2<>{});
  299.     });
  300.     case(Hnum<>{},{Yes},{
  301.         case(Hnum==Tnum,
  302.         {Yes},{    data:=data|Hnum|{,};
  303.         },{No},{data:=data|Hnum|{-}|Tnum|{,};
  304.         });
  305.     });
  306. };
  307.  
  308. %getOLD{
  309.     %tmp    tmpdir|{\_READ.TMP};
  310.     item:=1;
  311.     mwrite(tmp,2);
  312.     mclear(2);
  313.     Line:=@read(tmp,1,1);
  314.     case(@getchar(Line,1,1)={*},
  315.     {Yes},{    madd(2,{});
  316.     },{No},{madd(2,@getchar(Line,1,2));
  317.     });
  318.     fopen(tmp);
  319.     loop({
  320.         Line:=@fread(1,{*});
  321.         case(@getchar(Line,1,1)={*},{Yes},{
  322.             data:=data|@tail(@getchar(Line,2,3),{ })|{,};
  323.             item2:=@ftell;
  324.             mread(tmp,2,item+1,item2-item-1);
  325.             madd(2,{!});
  326.             item:=item2;
  327.         });
  328.         im(Line<>{});
  329.     });
  330.     case(data<>{},{Yes},catdata);
  331.     data:=@body(data,,{,});
  332.     mread(tmp,2,item+1,99999);
  333.     delfile(tmp);
  334. };
  335.  
  336. %getNEW{
  337.     %tmp    tmpdir|{\_READ.TMP};
  338.     item:=1;
  339.     mwrite(tmp,2);
  340.     mclear(2);
  341.     Line:=@read(tmp,1,1);
  342.     case(@getchar(Line,1,1)={*},
  343.     {Yes},{    madd(2,{});
  344.     },{No},{madd(2,@getchar(Line,1,2));
  345.     });
  346.     fopen(tmp);
  347.     loop({
  348.         Line:=@fread(1,{*});
  349.         case(@getchar(Line,1,1)={*},{Yes},{
  350.             data:=data|@tail(@getchar(Line,2,5),{ })|{,};
  351.             item2:=@ftell;
  352.             mread(tmp,2,item+1,item2-item-1);
  353.             madd(2,{!});
  354.             item:=item2;
  355.         });
  356.         im(Line<>{});
  357.     });
  358.     case(data<>{},{Yes},catdata);
  359.     data:=@body(data,,{,});
  360.     mread(tmp,2,item+1,99999);
  361.     delfile(tmp);
  362. };
  363.  
  364. %writedata{
  365.     var fno[10];
  366.     fno:=0;
  367.     loop({ fno:=fno+1;
  368.         filechk(FNameTop|{MES}|fno|{.txt})
  369.     });
  370.     fno:=@getchar(fno|{   },1,3);
  371.     IndexLine:={予}|{ }|fno|{ Read :}|@getchar(FORUM|{        },1,8)|
  372.         {/}|MES|{/     :指定発言取得\n};
  373.     write(IndexFName,IndexLine);
  374.     write(FNameTop|{MES}|fno|{.txt},{#}|data|{\n});
  375.     mwrite(objfile,2);
  376.     write(objfile,{>\n});
  377. };
  378.  
  379. %search{
  380.     %delmes{
  381.         %tmp    logd|{\_READ.TMP};
  382.         mwrite(tmp,2);
  383.         mclear(2);
  384.         fopen(tmp);
  385.         Line:=@fread(2,{-});
  386.         item:=@ftell;
  387.         case(@getchar(Line,1,20)={--------------------},
  388.         {Yes},{
  389.             mread(tmp,2,0,item);
  390.             mread(tmp,2,item+81,99999);
  391.         },{No},{
  392.             mread(tmp,2);
  393.         });
  394.         fclose;
  395.         delfile(tmp);
  396.     };
  397.     var max[5];
  398.     var now[5];
  399.     var Line[82];
  400.     var data[1000];
  401.     CloseAllMemo;
  402.     mclear(3);
  403.     footnote({ ただいまデータを書き出しています});
  404.     delmes;
  405.     max:=@nolmemo(2);
  406.     now:=0;
  407.     case(MesType,{OLD},{getOLD},{NEW},{getNEW});
  408.     case(data<>{},{Yes},{writedata});
  409. };
  410.  
  411. %end{
  412.     var NowIndex[82];
  413.     case(linenum>start && start<>{},{Yes},{
  414.         mclear(3);
  415.         mmove(2,1,start,3);
  416.         loop({
  417.             start:=start+1;
  418.             NowIndex:=@memo(2,start,1);
  419.             case(@getchar(NowIndex,1,1),
  420.                 {*},{madd(3,{ }|@getchar(NowIndex,2,82));
  421.                 },{ },{madd(3,{*}|@getchar(NowIndex,2,82))
  422.                 },,{madd(3,NowIndex);
  423.             });
  424.             im(start<linenum);
  425.         });
  426.         mmove(2,linenum+1,@nolmemo(2),3);
  427.         mclear(2);
  428.         mcopy(3,2);
  429.         mclear(3);
  430.     });
  431. };
  432.  
  433. %setstar{
  434.     var NowIndex[82];
  435.     NowIndex:=@memo(2,linenum,1);
  436.     mclear(3);
  437.     mmove(2,1,linenum-1,3);
  438.     case(@getchar(NowIndex,1,1),
  439.         {*},{    madd(3,{ }|@getchar(NowIndex,2,82));
  440.         },{ },{    madd(3,{*}|@getchar(NowIndex,2,82));
  441.         },{X},{    madd(3,{ }|@getchar(NowIndex,2,82));
  442.         },,{    madd(3,NowIndex);
  443.     });
  444.     mmove(2,linenum+1,@nolmemo(2),3);
  445.     mclear(2);
  446.     mcopy(3,2);
  447.     mclear(3);
  448. };
  449.  
  450. %divrtn{
  451.     case(MIDOKU=0,
  452.     {Yes},{
  453.         madd(2,{----------------------------< 未読はありません >}|
  454.             {-----------------------------\n});
  455.     },{No},{
  456.         var divline[5];
  457.         %max    @nolmemo(2)-1;
  458.         divline:=max-MIDOKU;
  459.         case(divline<0,{Yes},{divline:=0});
  460.         mmove(2,1,divline,3);
  461.         madd(3,{----------------------------< 以降が新規取得分 >}|
  462.             {-----------------------------\n});
  463.         mmove(2,divline+1,max+1,3);
  464.         mclear(2);
  465.         mcopy(3,2);
  466.         mclear(3);
  467.     });
  468. };
  469.  
  470. %readdata{
  471.     var point1[8];
  472.     var point2[8];
  473.     footnote({ ただいまデータを読み込んでいます});
  474.     mclear(2);
  475.     fopen(objfile);
  476.     loop({
  477.         IndexLine:=@fread(sp,{/});
  478.         point1:=@ftell;
  479.         fread(1,{>});
  480.         point2:=@ftell;
  481.         mread(objfile,2,point1,point2-point1);
  482.         im(IndexLine<>{});
  483.     });
  484.     fclose;
  485.     mwrite(objfile,2);
  486.     write(objfile,{>\n});
  487.     case(limit>0,{Yes},{
  488.         var firstline[5];
  489.         %max    @nolmemo(2)-1;
  490.         firstline:=max-limit;
  491.         case(firstline<1,{Yes},{firstline:=1});
  492.         mmove(2,firstline,max,3);
  493.         mclear(2);
  494.         mcopy(3,2);
  495.         mclear(3);
  496.     });
  497.     divrtn;
  498. };
  499.  
  500. %setdata{
  501.     var linenum[8];
  502.     var start[8];
  503.     ChkType;
  504.     readdata;
  505.     loop({
  506.         mopen(2,0,21,639,459,{w});
  507.         curline(linenum);
  508.         footnote({設定破棄    指定    始点終点    指名非読検索RMN },
  509.             {b});
  510.         loop({waitx(1000);
  511.             im(@xtype!=2 && @xtype<100 || @xlinenum<0)
  512.         });
  513.         linenum:=@xlinenum;
  514.         case(@PFK(@xtype),
  515.             2,{    OutAllMemo;
  516.             setstar;
  517.             start:={};
  518.             im({Yes});
  519.         },101,{ search;
  520.             im({No});
  521.         },102,{ im({No});
  522.         },104,{ OutAllMemo;
  523.             setstar;
  524.             start:={};
  525.             im({Yes});
  526.         },106,{ OutAllMemo;
  527.             setstar;
  528.             start:=linenum;
  529.             im({Yes});
  530.         },107,{ OutAllMemo;
  531.             end;
  532.             start:={};
  533.             im({Yes});
  534.         },109,{ mark:={*};
  535.             SelHan;
  536.             start:={};
  537.             im({Yes});
  538.         },110,{ mark:={X};
  539.             SelHan;
  540.             start:={};
  541.             im({Yes});
  542.         },111,{ OutAllMemo;
  543.             Who;
  544.             im({Yes});
  545.         },112,{ OutAllMemo;
  546.             case(@YesNo({ memoのデータをRMN形式に変更します}),
  547.             {Yes},{    RMN;
  548.             });
  549.             im({Yes});
  550.         },   ,{ OutAllMemo;
  551.             im({Yes});
  552.         });
  553.     });
  554.     CloseAllMemo;
  555.     footnote({});
  556. };
  557.  
  558. %dispmes{[Forum]
  559.     var linenum[8];
  560.     %sharp{
  561.         case(@getchar(@memo(1,linenum,1),1,1)={#},
  562.         {Yes},{    FORUM:=Forum;
  563.             MES:=@tail(@getchar(@memo(1,linenum,1),11,2),{ });
  564.             MIDOKU:=@tail(@getchar(@memo(1,linenum,1),26,3),{ });
  565.             case(@nochar(MES),1,{MES:={0}|MES});
  566.             CloseAllMemo;
  567.             objfile:=logd|{\}|FORUM|{\MES}|MES|{.RTN};
  568.             setdata;
  569.             im({Yes});
  570.         },{No},{OutAllMemo;
  571.             im({Yes});
  572.         });
  573.     };
  574.  
  575.     case(@fopen(logd|{\}|Forum|{\mestitle.log}),{Yes},{
  576.         madd(1,{  ★  読みたい物を左ダブルクリック}|
  577.                {(又はカーソル移動+PF3)で選択して下さい ★ \n});
  578.         loop({
  579.             %line @fread(12,{(});
  580.             %CcsNo    @case(@getchar(line,1,1),
  581.                 { },{im({0}|@getchar(line,2,2))},
  582.                    ,{getchar(line,1,2)
  583.                 });
  584.             case(line<>{} && @getchar(line,17,1)={)} && 
  585.                 @getchar(line,1,2)+0>0,
  586.             {Yes},{
  587.                 case(@filechk(logd|{\}|Forum|{\MES}|CcsNo|
  588.                     {.RTN}),
  589.                 {Yes},{madd(1,{#})},{No},{madd(1,{ })});
  590.                 madd(1,@getchar(Forum|{        },1,8)|{:}
  591.                     |@getchar(line,1,2)|{会議室 }
  592.                     |@getchar(line,6,5)|{(}
  593.                     |@getchar(line,14,3)|{)}
  594.                     |@getchar(line,21,5)|{:}
  595.                     |@getchar(line,29,80));
  596.             });
  597.             im(line<>{});
  598.         });
  599.         fclose;
  600.         loop({
  601.             mopen(1,0,21,639,459,{w});
  602.             curline(linenum);
  603.             footnote({終了決定},{b});
  604.             loop({waitx(1000);
  605.                 im(@xtype!=1 && @xtype<100 || @xlinenum<0)
  606.             });
  607.             linenum:=@xlinenum;
  608.             case(@PFK(@xtype),
  609.                 1,{    sharp;
  610.             },101,{ im({No});
  611.             },102,{    sharp;
  612.             });
  613.         });
  614.         CloseAllMemo;
  615.         mclear(1);
  616.     });
  617.     footnote({});
  618. };
  619.  
  620. %BForum{
  621.     var f2[700];
  622.     var b2[1100];
  623.     f2:=rtn;
  624.     b2:={loop(}|@xc({7b})|
  625.         {select({ フォーラムを選択してください},999,{im({Yes})}};
  626.     loop({
  627.         %fnset    @head(f2,{/});
  628.         %fname    @head(fnset,{(});
  629.         case(b2<>{},{Yes},{b2:=b2|{,}});
  630.         b2:=b2    |@xc({7b})|{ }|fname|{ }|@xc({7d})|{,}
  631.             |@xc({7b})|{ dispmes(}
  632.             |@xc({7b})|fname|@xc({7d})|{); im({No}); }
  633.             |@xc({7d});
  634.         f2:=@body(f2,{/});
  635.         im(f2<>{});
  636.     });
  637.     b2:=b2 |{,{  終  了  },{flag:={No}; im({No})} ); footnote({}); }
  638.             |@xc({7d})|{);};
  639.     case(rtn={},
  640.     {Yes}, {im({});
  641.     },{No},{im(b2);
  642.     });
  643. };
  644.  
  645. %selrtn    @BForum;
  646.  
  647. allclear;
  648. madd(1,{});
  649. madd(2,{});
  650. madd(3,{});
  651. footnote({});
  652. flag:={Yes};
  653. loop({
  654.     FORUM:={};
  655.     MES:={};
  656.     mclear(1); mclear(2); mclear(3);
  657.     selrtn;
  658.     CloseAllMemo;
  659.     im(flag<>{No});
  660. });
  661. allclear;
  662.